package main

import (
	"errors"
	"fmt"
	"time"
)
// 接收一个类型 为 func() error 的函数， 返回一个只能输出 error类型的chan
func spawn(f func() error) <- chan error {
	// 创建 channel
	c := make(chan error)
	// 开启一个 goroutine
	go func() {
		// 接收一个错误类型的值
		c <- f()
	}()
	return c // 返回 channel
}
func main() {
	c := spawn(func() error {
		time.Sleep(2 * time.Second)
		return errors.New("超时！")
	})
	// 获取 通道中的errors值
	fmt.Println(<- c)

}
